Go uses implicit (structural) interface satisfaction — a type implements an interface simply by having the required methods, with no explicit declaration or 'implements' keyword.
Decoupling: the consumer defines the interface — the library doesn't need to know about it
No circular import issues caused by interface packages
Third-party types can satisfy your interfaces without modification
Interfaces are checked at compile time — no runtime casting overhead
Enables the consumer-defined interface pattern: small, focused interfaces defined where they are used